<?php
/**
* DESCRIPCION DE XML_PARSER
* 
* OBJETIVO:
*
* MODIFICADORES DE LOS ATRIBUTOS !!

[OK] name          : nombre del atributo de la clase
[OK] table         : nombre de la columna
[OK] notnull       : Puede ser nulo ? true|false
[OK] sqlType       : Tipo de dato de MySQL
[OK] length        : Tamaño del tipo de dato ej: VARCHAR(50) = 50
[OK] unsigned      : Tiene signo? true|false
[OK] default       : Valor por defaul en el caso de un null
[OK] autoincrement : Se autoincrementa?

*
* @copyright  Creative Commons Atribución 2.5 Argentina.
* @author iuga - iuga77@gmail.com
* @version 0.0.0
* @todo: ---
*/
class XMLParser
{
    /**
     * Guarda el XML Parseado
     * @var <String> 
     */
    private $xml;

    /**
     * Parsea y abre el xml
     * @param <String> $xml
     */
    public function XMLParser($xml)
    {
       $this->xml = $xml;
       // Abro el archivo y lo parseo
       if(file_exists($this->xml))
       {
        $this->xml = simplexml_load_file($this->xml);
       }
       else
       {
        throw new Exception("No se encuentra el archivo XML:".$xml);
       }
    }

    /**
     * Retorna un Array con todos los ids del objeto
     * @return name|table|sqlType|notnull
     */
    public function getIds()
    {
       $todos = Array();
       
       foreach($this->xml->atributes->id as $id)
       {
               // print_r($id);
               // Armo el array con el id
               $idx = Array();
               // Lleno los datos básicos de los ids ===========================
               if(isset($id->attributes()->name))
               $idx['name']    = strval($id->attributes()->name);
               if(isset($id->attributes()->table))
               $idx['table']   = strval($id->attributes()->table);
               if(isset($id->attributes()->sqlType))
               $idx['sqlType'] = strval($id->attributes()->sqlType);
               if(isset($id->attributes()->autoincrement))
               $idx['autoincrement'] = strval($id->attributes()->autoincrement);
               if(isset($id->attributes()->notnull))
               $idx['notnull'] = strval($id->attributes()->notnull);
               if(isset($id->attributes()->length))
               $idx['length'] = strval($id->attributes()->length);  
               if(isset($id->attributes()->unsigned))
               $idx['unsigned'] = strval($id->attributes()->unsigned);  
               if(isset($id->attributes()->default))
               $idx['default'] = strval($id->attributes()->default);               
               //===============================================================
               
               $todos[] = $idx;
       }
       // Guardo el analisis para futuros accesos
       return $todos;
    }

    /**
     * Retorna un Array con todos los Atributos del objeto
     * @return name|table|sqlType|notnull
     */
    public function getAtributos()
    {
       $todos = Array();
       
       foreach($this->xml->atributes->atribute as $atr)
       {
               // print_r($id);
               // Armo el array con el id
               $atrx = Array();
               // Lleno los datos básicos de los ids ===========================
               if(isset($atr->attributes()->name))
               $atrx['name']    = strval($atr->attributes()->name);
               if(isset($atr->attributes()->table))
               $atrx['table']   = strval($atr->attributes()->table);
               if(isset($atr->attributes()->sqlType))
               $atrx['sqlType'] = strval($atr->attributes()->sqlType);
               if(isset($atr->attributes()->autoincrement))
               $atrx['autoincrement'] = strval($atr->attributes()->autoincrement);
               if(isset($atr->attributes()->notnull))
               $atrx['notnull'] = strval($atr->attributes()->notnull);
               if(isset($atr->attributes()->length))
               $atrx['length'] = strval($atr->attributes()->length);
               if(isset($atr->attributes()->unsigned))
               $atrx['unsigned'] = strval($atr->attributes()->unsigned);
               if(isset($atr->attributes()->default))
               $atrx['default'] = strval($atr->attributes()->default);
               //===============================================================
               
               $todos[] = $atrx;
       }  
       return $todos;
    }

    /**
     * Retorna el nombre de la clase
     */
    public function getNombreClase()
    {
       return strval($this->xml->attributes()->name);
    }

    /**
     * Retorna el nombre de la tabla asociada a la clase
     */
     public function getNombreTabla()
     {
         return  strval($this->xml->attributes()->table);
     }

}
?>
